// 订单相关类型定义 - 与后端Orders和OrderItem模型保持一致

// 订单实体 - 与后端Orders模型完全对应
export interface Order {
  id: number                    // 后端: Long id，JSON序列化为number
  orderNo: string               // 订单号
  memberId: number              // 后端: Long memberId，JSON序列化为number (对应用户ID)
  totalPay: number              // 后端: BigDecimal totalPay，JSON序列化为number
  payType?: string              // 支付方式
  payTime?: string              // 后端: Date payTime，JSON序列化为ISO字符串
  status: string                // 订单状态
  receiverAddrId?: number       // 后端: Long，JSON序列化为number
  receiverName?: string         // 收货人姓名
  receiverPhone?: string        // 收货人电话
  receiverAddrDetail?: string   // 收货地址详情
  orderComment?: string         // 订单备注
  isDel: number                 // 是否删除 0-正常 1-删除
  description?: string          // 描述
  createdTime: string           // 后端: Date createdTime，JSON序列化为ISO字符串
  checkoutTime?: string         // 后端: LocalDateTime checkoutTime (下单时间)
  createdBy?: string            // 创建人
  updateTime?: string           // 后端: Date updateTime，JSON序列化为ISO字符串
  updateBy?: string             // 更新人
  orderItems?: OrderItem[]      // 订单项列表（前端添加的字段，用于存储订单项信息）
}

// 订单项 - 与后端OrderItem模型对应
export interface OrderItem {
  id?: number                   // 后端: Long，JSON序列化为number
  orderId?: number              // 后端: Long，JSON序列化为number
  userId: number                // 后端: Long userId，JSON序列化为number
  goodId: number                // 后端: Long goodId，JSON序列化为number
  goodName: string              // 后端: String goodName
  goodPic?: string              // 后端: String goodPic  
  goodDesc?: string             // 后端: String goodDesc
  dealPrice: number             // 后端: BigDecimal dealPrice，JSON序列化为number
  count: number                 // 后端: Integer count
  addressId: number             // 后端: Long addressId，JSON序列化为number
  createdTime?: string          // 后端: Date createdTime，JSON序列化为ISO字符串
  updatedTime?: string          // 后端: Date updatedTime，JSON序列化为ISO字符串
}

// 订单搜索参数 - 与后端OrderSerachBean对应
export interface OrderSearchParams {
  pageNo?: number
  pageSize?: number
  orderNo?: string
  memberId?: number             // 使用memberId而不是userId，与后端Orders.memberId对应
  status?: string
}

// 订单分页响应 - 与MyBatis Plus的Page结构保持一致
export interface OrderPageResponse {
  records: Order[]      // MyBatis Plus Page.records
  total: number         // MyBatis Plus Page.total
  current: number       // MyBatis Plus Page.current
  size: number          // MyBatis Plus Page.size
  pages: number         // MyBatis Plus Page.pages
}

// 销售统计数据
export interface Sales {
  totalSales: number            // 后端: BigDecimal，JSON序列化为number
  totalOrders: number           // 后端: BigDecimal，JSON序列化为number
  averageOrderValue: number     // 后端: BigDecimal，JSON序列化为number
  completionRate: number
}

// 订单状态枚举
export enum OrderStatus {
  PENDING = 'pending',
  PAID = 'paid',
  SHIPPED = 'shipped',
  COMPLETED = 'completed',
  CANCELLED = 'cancelled'
} 